package vista.ventanaEstadoTarea;

import java.awt.event.ActionEvent;
import javax.swing.JOptionPane;
import modelo.exception.NoPuedeIniciarException;
import modelo.exception.SameStateException;
import modelo.exception.StatusChangeException;
import modelo.tareas.Tarea;

/**
 * @author Cristian
 * extiende de ButtonAction.
 * */
public class BotonIniciarTarea extends ButtonAction {

	//Constructor *********************************************************** //
	public BotonIniciarTarea(VentanaTarea modelo){
		super(modelo);
	}
	
	/**
	 * Boton que determina el estado de la tarea.
	 * Cambia el estado de la tarea de Creado a Iniciado.
	 * Solo se cambia a ese estado cuando el estado es creado, de lo contrario 
	 * lanza una excepcion.
	 * Escribe en un txt la fecha en la que se creo.
	 * Modifica el label de estado.
	 * @exception SameStateException.
	 * @exception StatusChangeException.
	 * @exception NoPuedeIniciarException.
	 * */
	public void actionPerformed(ActionEvent e) {
		try {
			Tarea tarea = this.ventana.getModelo();
			if(this.ventana.getModelo().puedeIniciar(tarea)){
				this.ventana.getModelo().iniciarTarea();
				this.ventana.getEstado().setText(this.ventana.getModelo().getEstado().getNombre());
				this.escribir("TAREA: "+ this.ventana.getModelo().getNombre());
				this.escribir("FECHA CREACION: "+this.ventana.getModelo().getFechaCreacion());
			}
			else{
				JOptionPane.showMessageDialog(this.ventana.getFrame().getContentPane(), "No se puede cambiar de estado",
						"Error", JOptionPane.ERROR_MESSAGE);
			
			}
		} catch (SameStateException e1) {
			JOptionPane.showMessageDialog(this.ventana.getFrame().getContentPane(), "No se puede cambiar al mismo estado",
					"Error", JOptionPane.ERROR_MESSAGE);
		} catch (StatusChangeException e1) {
			JOptionPane.showMessageDialog(this.ventana.getFrame().getContentPane(), "No se puede cambiar de estado",
					"Error", JOptionPane.ERROR_MESSAGE);
		} catch (NoPuedeIniciarException e1) {
			JOptionPane.showMessageDialog(this.ventana.getFrame().getContentPane(), "No se puede iniciar, deben finalizar las tareas que la componen",
					"Error", JOptionPane.ERROR_MESSAGE);
		}
	}

}
